/*
 * Wazuh databaseFeedManager
 * Copyright (C) 2015, Wazuh Inc.
 * September 26, 2023.
 *
 * This program is free software; you can redistribute it
 * and/or modify it under the terms of the GNU General Public
 * License (version 2) as published by the FSF - Free Software
 * Foundation.
 */
#ifndef _TRAMPOLINE_CONTENTREGISTER_HPP
#define _TRAMPOLINE_CONTENTREGISTER_HPP

#include "MockContentRegister.hpp"

#include "json.hpp"

extern std::shared_ptr<MockContentRegister> spContentRegisterMock;

/**
 * @brief This class is a wrapper of the trampoline content register library.
 */
class TrampolineContentRegister final
{
public:
    /**
     * @brief Constructor for creating a TrampolineContentRegister object.
     *
     * The `TrampolineContentRegister` constructor initializes a new instance of the
     * TrampolineContentRegister class.
     *
     * @param topicName The name of the topic associated with this content register.
     * @param parameters Additional parameters provided as a JSON object.
     */
    TrampolineContentRegister(std::string topicName, const nlohmann::json parameters) {};

    virtual ~TrampolineContentRegister() = default;

    /**
     * @brief Changes schedular interval to a new value.
     *
     * @param newInterval New value to set.
     */
    void changeSchedulerInterval(size_t newInterval)
    {
        spContentRegisterMock->changeSchedulerInterval(newInterval);
    }
};

#endif //_TRAMPOLINE_CONTENTREGISTER_HPP
